//package com.kudostar.android.kudostar;
//
//import java.util.HashMap;
//
//import android.content.ContentProvider;
//import android.content.ContentProviderDatabaseHelper;
//import android.content.ContentURIParser;
//import android.content.ContentValues;
//import android.content.QueryBuilder;
//import android.content.Resources;
//import android.database.Cursor;
//import android.database.SQLException;
//import android.database.sqlite.SQLiteDatabase;
//import android.net.ContentURI;
//import android.text.TextUtils;
//import android.util.Log;
//
//import com.kudostar.android.provider.KudoStar;
//
///**
// * Provides access to a database of notes. Each note has a title, the note
// * itself, a creation date and a modified data.
// *
// */
//public class KudoStarProvider extends ContentProvider {
//    
//    private static class DatabaseHelper extends ContentProviderDatabaseHelper {
//
//        @Override
//        public void onCreate(SQLiteDatabase db) {
//            db.execSQL( "CREATE TABLE stars (_id INTEGER PRIMARY KEY, origin TEXT, intended TEXT, value INTEGER, description TEXT, tags TEXT, created INTEGER);" );
//        }
//
//        @Override
//        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//            Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will destroy all old data");
//            db.execSQL( "DROP TABLE IF EXISTS stars" );
//            onCreate( db );
//        }
//    }
//
//    private static final String DATABASE_NAME = "kudostar.db";
//    private static final int DATABASE_VERSION = 1;
//    private static HashMap<String, String> KUDOSTAR_PROJECTION_MAP;
//
//    private static final int STAR_ID = 2;
//
//    private static final int STARS = 1;
//    private static final String TAG = "KudoStarProvider";
//
//    private static final ContentURIParser URL_MATCHER;
//
//    static {
//        URL_MATCHER = new ContentURIParser(ContentURIParser.NO_MATCH);
//        URL_MATCHER.addURI("com.google.provider.NotePad", "notes", NOTES);
//        URL_MATCHER.addURI("com.google.provider.NotePad", "notes/#", NOTE_ID);
//
//        NOTES_LIST_PROJECTION_MAP = new HashMap<String, String>();
//        NOTES_LIST_PROJECTION_MAP.put(KudoStar.Stars._ID, "_id");
//        NOTES_LIST_PROJECTION_MAP.put(KudoStar.Stars.TITLE, "title");
//        NOTES_LIST_PROJECTION_MAP.put(KudoStar.Stars.NOTE, "note");
//        NOTES_LIST_PROJECTION_MAP.put(KudoStar.Stars.CREATED_DATE, "created");
//        NOTES_LIST_PROJECTION_MAP.put(KudoStar.Stars.MODIFIED_DATE, "modified");
//    }
//    
//    private SQLiteDatabase mDB;
//
//    @Override
//    public int delete(ContentURI url, String where, String[] whereArgs) {
//        int count;
//        long rowId = 0;
//        switch (URL_MATCHER.match(url)) {
//        case NOTES:
//            count = mDB.delete("note_pad", where, whereArgs);
//            break;
//
//        case NOTE_ID:
//            String segment = url.getPathSegment(1);
//            rowId = Long.parseLong(segment);
//            count = mDB
//                    .delete("notes", "_id="
//                            + segment
//                            + (!TextUtils.isEmpty(where) ? " AND (" + where
//                                    + ')' : ""), whereArgs);
//            break;
//
//        default:
//            throw new IllegalArgumentException("Unknown URL " + url);
//        }
//
//        getContext().getContentResolver().notifyChange(url, null);
//        return count;
//    }
//
//    @Override
//    public String getType(ContentURI url) {
//        /*switch (URL_MATCHER.match(url)) {
//        case STARS:
//            return "vnd.android.cursor.dir/vnd.google.note";
//
//        case STAR_ID:
//            return "vnd.android.cursor.item/vnd.google.note";
//
//        default:
//            throw new IllegalArgumentException("Unknown URL " + url);
//        }*/
//    }
//
//    @Override
//    public ContentURI insert(ContentURI url, ContentValues initialValues) {
//        long rowID;
//        ContentValues values;
//        if (initialValues != null) {
//            values = new ContentValues(initialValues);
//        } else {
//            values = new ContentValues();
//        }
//
//        if (URL_MATCHER.match(url) != STARS) {
//            throw new IllegalArgumentException("Unknown URL " + url);
//        }
//
//        Long now = Long.valueOf(System.currentTimeMillis());
//        Resources r = Resources.getSystem();
//
//        // Make sure that the fields are all set
//        if (values.containsKey(KudoStar.Stars.CREATED_DATE) == false) {
//            values.put(KudoStar.Stars.CREATED_DATE, now);
//        }
//
//        if (values.containsKey(KudoStar.Stars.MODIFIED_DATE) == false) {
//            values.put(KudoStar.Stars.MODIFIED_DATE, now);
//        }
//
//        if (values.containsKey(KudoStar.Stars.TITLE) == false) {
//            values.put(KudoStar.Stars.TITLE, r.getString(android.R.string.untitled));
//        }
//
//        if (values.containsKey(KudoStar.Stars.NOTE) == false) {
//            values.put(KudoStar.Stars.NOTE, "");
//        }
//
//        rowID = mDB.insert("stars", "star", values);
//        if (rowID > 0) {
//            ContentURI uri = KudoStar.Stars.CONTENT_URI.addId(rowID);
//            getContext().getContentResolver().notifyChange(uri, null);
//            return uri;
//        }
//
//        throw new SQLException("Failed to insert row into " + url);
//    }
//
//    @Override
//    public boolean onCreate() {
//        DatabaseHelper dbHelper = new DatabaseHelper();
//        mDB = dbHelper.openDatabase( getContext(), DATABASE_NAME, null, DATABASE_VERSION );
//        return (mDB == null) ? false : true;
//    }
//
//    @Override
//    public Cursor query(ContentURI url, String[] projection, String selection, String[] selectionArgs, String groupBy, String having, String sort) {
//        QueryBuilder qb = new QueryBuilder();
//
//        switch (URL_MATCHER.match(url)) {
//        case STARS:
//            qb.setTables("stars");
//            qb.setProjectionMap(KUDOSTAR_PROJECTION_MAP);
//            break;
//
//        case STAR_ID:
//            qb.setTables("stars");
//            qb.appendWhere("_id=" + url.getPathSegment(1));
//            break;
//
//        default:
//            throw new IllegalArgumentException("Unknown URL " + url);
//        }
//
//        // If no sort order is specified use the default
//        String orderBy;
//        if (TextUtils.isEmpty(sort)) {
//            orderBy = KudoStar.Stars.DEFAULT_SORT_ORDER;
//        } else {
//            orderBy = sort;
//        }
//
//        Cursor c = qb.query(mDB, projection, selection, selectionArgs, groupBy, having, orderBy);
//        c.setNotificationUri(getContext().getContentResolver(), url);
//        return c;
//    }
//
//    @Override
//    public int update(ContentURI url, ContentValues values, String where, String[] whereArgs) {
//        int count;
//        switch (URL_MATCHER.match(url)) {
//        case NOTES:
//            count = mDB.update("notes", values, where, whereArgs);
//            break;
//
//        case NOTE_ID:
//            String segment = url.getPathSegment(1);
//            count = mDB
//                    .update("notes", values, "_id="
//                            + segment
//                            + (!TextUtils.isEmpty(where) ? " AND (" + where
//                                    + ')' : ""), whereArgs);
//            break;
//
//        default:
//            throw new IllegalArgumentException("Unknown URL " + url);
//        }
//
//        getContext().getContentResolver().notifyChange(url, null);
//        return count;
//    }
//}
